#! /bin/bash

# Installer et configurer Hadoop map-reduce ainsi que le mrtoolkit en ruby.
# Besoin des droits admin
# ce script est l'étape 1, étape 2 = install_mrtoolkit
# voir script local hadoop.sh

config_mrtoolkit(){

    echo "Configuration mrtoolkit..."
    export RUBYLIB=$HOME/mrtoolkit/lib

    export HADOOP_HOME=$HOME/hadoop-0.20.2
    export HADOOP_STREAMING_VERSION=0.20.2
    PATH=$PATH:$HADOOP_HOME/bin

    echo "export RUBYLIB=$HOME/mrtoolkit/lib; export HADOOP_HOME=$HOME/hadoop-0.20.2; \
export HADOOP_STREAMING_VERSION=0.20.2; PATH=$PATH:$HADOOP_HOME/bin" >> ~/.bashrc

    echo "export RUBYLIB=$HOME/mrtoolkit/lib; export HADOOP_HOME=$HOME/hadoop-0.20.2; \
export HADOOP_STREAMING_VERSION=0.20.2; PATH=$PATH:$HADOOP_HOME/bin" 
}

help(){
    echo "Ce script nécessite les droits administrateur."
    echo -e "options :\n\t -a : archive_mrtoolkit en tar.gz (normalement mise sur le google code)"
    echo -e "\t -h : cette même aide."
    echo -e "Si on donne 3 adresses en argument, cela correspond aux adresses IP du maitre et de deux esclaves."
}

ARCHIVE_MRTOOLKIT=

if [ $# -eq 1 ] ; then
    if [ $1 = "-c" ] ; then
        config
        exit
    fi
    
    if [ $1 = "-a" ] ; then
    ARCHIVE_MRTOOLKIT=$1
    fi

    if [ $1 = "-h" ] ; then
        help
        exit
    fi
fi

echo "Il faut connaitre les IPs du maitre et des esclaves"
# IP_M1=
# IP_M2=
# IP_M3=

echo "nbr d'args=$#"
if [ $# -eq '3' ] ; then
    IP_M1=$1
    IP_M2=$2
    IP_M3=$3
    
fi

echo "IP_M1=$1"; echo "IP_M2=$2"; echo "IP_M3=$3"

install_hadoop(){
# Installer Hadoop et configurer maitre/esclaves
# exple avec 3 machines :
# ex instances: machine1 NameNode? JobTracker? Private IP Address: 10.2.111.115

# machine2 Slave1 Private IP Address: 10.114.30.186

# machine3 Slave2 10.98.177.19

# dans etc/hosts add the lines at the begining:

# 10.2.111.115 Master 10.114.30.186 Slave1 10.98.177.19 Slave2 
    
    echo "Configuration des IPs maitre/esclaves dans /etc/hosts ..."
    mv /etc/hosts /etc/hosts.back
    echo "$IP_M1 Master 
$IP_M2 Slave1 
$IP_M3 Slave2" > /tmp/hosts
    cat /etc/hosts.back >> /tmp/hosts
    mv /tmp/hosts /etc/hosts

# get the packet already configured
    echo "Téléchargement de hadoop préconfiguré sur UbuntuOne ..."
    if [ ! -f hadoop_ubuntuone.tar.gz ] ; then
        wget -nv -O hadoop_ubuntuone.tar.gz http://ubuntuone.com/2ZsAICsi70mypG5RgZyPRx 
        tar xf hadoop_ubuntuone.tar.gz
    fi

# export HADOOP_HOME="/home/ubuntu/hadoop-0.20.2" 
    export HADOOP_HOME="/home/$USER/hadoop-0.20.2" 
    echo 'export HADOOP_HOME="/home/ubuntu/hadoop-0.20.2"' >> ~/.bashrc

# Copier la cle prive sur une instance EC2 Master pour que le Master
# puisse se connecter en ssh aux slaves //il faut rien faire sur les
# slaves
    #echo "Copie de la clef rsa" #TODO
    #scp -i id_rsa-pstam-keypair id_rsa-pstam-keypair ubuntu@Master:. 

# dans home/ubuntu
    cd
    if [ -f id_rsa-pstam-keypair.tar ] ; then
        tar -xf id_rsa-pstam-keypair.tar
    fi
        
    cp id_rsa-pstam-keypair ~/.ssh/id_rsa


# Installer java
    echo "===================="
    echo "Installer java ..." ; echo ""  
    sudo add-apt-repository ppa:ferramroberto/java && sudo apt-get -qq update
    echo y | sudo apt-get install -y sun-java6-jdk > /dev/null
    #! il faut faire ok 
    echo 'export JAVA_HOME="/usr/lib/jvm/java-6-sun"' >> ~/.bashrc
    

#
	

# Info : pour arreter les instances map reduce :
# bin/stop-mapred.sh bin/stop-dfs.sh 

}

################################################################################
# MAIN
################################################################################

install_hadoop 
#install_mrtoolkit #->moved to file

